Top 10k strings from ROM Routinen (1987)(Klaus Jahn)(de).z80 in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [Z80] (TOSEC-v2007-01-01) /

Back to the directory listing

   2  hl' - Register holen.~   exx"
   2  [siehe ""Farben festlegen""]"
   1 x8DDD8|($$
   1 und auf 'v' druecken !
   1 c$=" auf Calculatorstack legen"
   1 bQIIF"AII6
   1 a$="Welche Seite moechten Sie sehen [1..24] ?\"+
   1 a$="Alles klar ! Seite "+s$+" erscheint sofort.":
   1 Cassettenrekorder einschalten
   1 Bitte Cassettenrekorder ab-
   1 @H~IIB TT8@
   1 6III6&III>
   1 +" call 6037~~hl = hl * de:\"+
   1 +" call 5829"
   1 +" call 5808~~Berechnen einer Bildschirm-Pixel-Adresse~nach hl. Angegeben wird die (X,Y)-~Pixelposition:~~a) ld c,{X-Koordinate}~b) ld b,{Y-Koordinate}~c) call 8874~d) hl gibt die SCREEN$-Adresse an."
   1 +" call 4656"
   1 +" call 4185~~BASIC-Zeilenkursor runter:\"+
   1 +" call 4083"
   1 +" call 3884~~Ausgabe eines Listings:\"+
   1 +" call 12457"
   1 +" call 12171~~Scrollen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3584"
   1 +" call 11747"
   1 +" call 11733"
   1 +" call 11682"
   1 +" call 11563"
   1 +" call 11560"
   1 +" call 11547~Akku auf Buchstabencode pruefen:call 11405~Akku auf alphanumerisch pruefen:call 11400"
   1 (DD88DDD 8DD(
   1 'EEE9>III2
   1 "7","0100","BASIC-Programm loeschen:\"+
   1 "6","0710","
   1 "4","1005","
   1 "3","0100","SAVE Header:~~a) ld ix,{Startadresse des Headers}~b) ld de,17~c) xor a~d) call 1218   SAVE-Routine"
   1 "3","0100","PLOT x,y:~~a) ld c,{x}    X-Koordinate in c~b) ld b,{y}    Y-Koordinate in b~c) call 8927   PLOT-Routine"
   1 "3","0100","LOAD CODE:~~a) ld ix,{Anfangsadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) scf~e) call 1366   LOAD-Routine"
   1 "3","0100","BEEP x/y,z:~~a) ld a,{x}    Dividend der Tonlaenge~   call 11560 "+c$+"~b) ld a,{y}    Divisor der Tonlaenge~   call 11560 "+c$
   1 "3","0100","#3  Ausdruck auf Drucker~#2  Ausdruck auf Screen Zeile 0 bis 21~#1  Ausdruck auf Screen Zeile 22 bis 23~#0
   1 "2","0100","a) call 3405~b) Festlegung der gewuenschten Farb-~anweisung mit rst 16~c) call 7341~~MEM-Anweisung:~~a) call 7962~b) ld hl,65535~c) and a~d) sbc hl,bc~e) der in BASIC noch verfuegbare Bereich~   steht jetzt im hl-Register."
   1 "2","0100","VERIFY CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge der Codes}~c) ld a,255~d) and a~call 1366   LOAD-Routine"
   1 "2","0100","Sie haben sich bestimmt schon darueber~geaergert, dass Sie In Maschinensprache~auf den BASIC-Komfort verzichten mu@ten.~Das soll sich nun auch fuer Sie aendern.~Ich gebe Ihnen hier eine komplette Auf-~listung der gesamten nuetzlichen ROM-~Routinen im Spectrum-ROM."
   1 "2","0100","PRINT x:  {x liegt im Bereich 0 - 9999}~~a) ld bc,{x}   Zahl in bc-Register bringenb) call 6683   Zeilennummerdruck-Routine~~PRINT x:~~a) ld bc,{x}   Zahl~b) call 11563 "+c$+"~c) call 11747  Zahlenausdruck."
   1 "2","0100","POINT (x,y):~~a) ld c,{x}~b) ld b,{y}~c) call 8910~d) call 7833~e) Ergebnis (1 oder 0) befindet sich im Akku.~~SCREEN$ (y,x):~~a) ld a,{y}    Y-Koordinate~   call 11560 "+c$+"~b) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~c) call 9525   SCREEN$-Routine~d) call 11249  String-Parameter vom Cal-"
   1 "2","0100","Loeschen von Calculatorstack,~Workspace und Editorspace:\"+
   1 "2","0100","Loeschen einer bestimmten Bildzeilen-~zahl (von unten gesehen):~~a) ld b,{Zeilenzahl}~b) call 3652~~Ausgabe einer Fehlermeldung:~~Dazu wird der Befehl rst 8 benutzt. Der~Code der Fehlermeldung wird einfach als~ein Byte dem rst 8-Befehl angefuegt.~Man befindet sich nach aufruf dieses~Befehls sofort wieder im BASIC.~Z.B. wird die Meldung 0 OK so gemacht:"
   1 "2","0100","Jetzt befinden sich die Stringparameter~(Laenge und Startadresse) in den~Registern bc und de. Um das Ergebnis~der Funktion SCREEN$ zu bekommen,~schreibt man einfach:~~e) ld a,(de)~~und das Ergebnis (der ASCII-Code)~befindet sich im Akku."
   1 "2","0100","FARBEN FESTLEGEN:~~Als Beispiel geben wir uns an, wie die~Befehle~~PAPER 7: INK 9: OVER 1    in Assembler~aussehen:\"+
   1 "2","0100","Der Calculator:~~Wie man mit dem rst 40-Befehl umgeht,~haben Sie ja schon bei dem BEEP-Befehl~gesehen. Der Calculator kann immer nur~den obersten oder die obersten 2 Calcula-~torstack-Elemente behandeln. Das Ergeb-~nis wird dann wieder auf den Stack~zurueckgelegt.~Ich gebe Ihnen jetzt eine komplette~Auflistung der so genannten Calculator-~opcodes, die die saemtlichen Spectrum-~Funktionen darstellen."
   1 "2","0100","DRAW x,y,z:~~a) X- und Y- Koordinaten wie bei~   DRAW x,y auf den Calculatorstack~   bringen~b) ld a,{z}    Radiantenzahl~   call 11560 "+c$+"~c) hl' -Register sichern (siehe DRAW x,y)"
   1 "2","0100","CLS:
   1 "2","0100","Bei folgenden 3 Pruefroutinen trifft~die Bedingung zu, wenn das Carry-Flag~=0 ist:~~Akku auf Zifferncode pruefen:\"+
   1 "2","0100","BRIGHT x:
   1 "1815","culatorstack holen~[weiter auf der naechsten Seite !]"
   1 "1700","obersten Calculatorstackwert~ins bc-Registerpaar bringen:\"+
   1 "1700","SCROLL:
   1 "1600","a) rst 8~b) Byt. #255  {Meldecode minus 1}"
   1 "1500","PAUSE x:~~a) res 5,(iy+1) Eingabe freimachen~b) ld bc,{x}    Laenge in msec. nach bc~c) call 7997"
   1 "1500","EDIT:\"+
   1 "1500","BORDER x:~~a) ld a,{x}    Farbe in Akku bringen~b) call 8859   BORDER-Routine aufrufen."
   1 "1400","obersten Calculatorstackwert~in den Akku bringen:\"+
   1 "1400","Diese Opcodes werden einfach als Bytes~hinter dem rst 40-Befehl angefuegt."
   1 "1300","a) ld a,{x}    Kanalnummer in Akku~b) call 5633   Kanal oeffnen~~Die Kanaele lauten (siehe naechste Seite):"
   1 "1300","a = c + 10 * a:\"+
   1 "1300","PRINT a$:~~a) ld de,{Startadresse der Zeichenkette}~b) ld bc,{Laenge der Zeichenkette}~c) call 8252   Textdruck."
   1 "1200","PRINT AT y,x:~~a) ld b,{24-y}~b) ld c,{33-x}~c) call 3545"
   1 "1200","ATTR (y,x):~~a) ld c,{y}~b) ld b,{x}~c) call 9603~d) call 7833~e) Das Ergebnis steht im c-Register."
   1 "1100","d) exx~   push hl
   1 "1100","c) exx~   push hl
   1 "1100","bc - Registerinhalt~"+c$+":\"+
   1 "1100","Ausgabe von Text, dessen letztes Byte mit~gesetztem bit 7 markiert ist:~~a) ld de,{Startadresse des Textes}~b) call 3082~~BASIC-Zeilenkursor hoch:\"+
   1 "1","0100","Stringdefinition:~~Man kann einen String schaffen, indem man~seine Startadresse ins de- und seine~Laenge ins bc-Register bringt.~Der Akku mu@ 0 sein; dann werden diese~5 Bytes mit der Routine~~   call 10929~auf den Calculatorstack gebracht.~~Mit der Routine~   call 11249~hingegen kann man ein Stringparameter~vom Calculatorstapel herunterholen."
   1 "1","0100","LIST x:~~a) ld hl,{Startadresse von Zeile x}~b) call 6229~~LOAD Header:~~a) ld ix,{Anfangsadresse des Headers}~b) ld de,17~c) xor a~d) scf~e) call 1366   LOAD-Routine"
   1 "0900","d) call 9108   DRAW II - Routine~e) hl' -Register holen (Siehe DRAW x,y).~~FLASH:
   1 "0900","SOUND x,y:~~(Erzeugt einen kurzen Pfeifton. x ist~die Tontiefe und liegt im Bereich~[1..65535]. y ist die Tonlaenge und~liegt im Bereich [0..65535].)~~a) ld hl,{x}~b) ld de,{y}~c) call 949"
   1 "0900","SAVE CODE:~~a) ld ix,{Startadresse des Codes}~b) ld de,{Laenge des Codes}~c) ld a,255~d) call 1218   SAVE-Routine."
   1 "0900","NEW:
   1 "0800","PRINT CHR$(x):~~a) ld a,{x}    Code des Zeichens in Akku~b) rst 16
   1 "0800","Die normale temporaere Farbzuweisung~geschieht ganz einfach mit rst 16.~Soll z.B. PAPER 7 ausgedrueckt werden,~so schreibt man:~~a) ld a,17
   1 "0800","Au@erdem nenne ich Ihnen die Anwendung~mit den Registern, die die Routinen be-~nutzen.~Sie werden sehen, da@ einige Routinen mit~dem so genannten Calculatorstack arbeiten;dieser ist eine Art Stapel, um 5-Byte-~Fliesskommazahlen oder Stringparameter~abzuspeichern, aber dazu Spaeter mehr !~Ich zeige Ihnen jetzt die wichtigsten~Routinen:"
   1 "0800","Akkuinhalt~"+c$+":\"+
   1 "0700","c) rst 40
   1 "0700","PRINT #x:~~Bevor man irgendetwas zum erstenmal aus-~druckt, mu@ der Bildkanal mit PRINT#~geoeffnet werden ! Das geschieht so:"
   1 "0500","Ausdruck des obersten~Calculatorstackwertes:\"+
   1 "0404","Die nuetzlichsten","1220","ROUTINEN","1802","
   1 "0300","Calculatorstack loeschen:\"+
   1 ","1305","
   1 ","1205","
   1 ","1105","
   1 ","0910","
   1 ","0810","
   1  stellen !
   1  hl' - Register sichern~   exx~e) call 9005   CIRCLE-Routine aufrufen~f) exx~   pop hl
   1  hl' - Register sichern~   exx~d) call 9335   DRAW I - Routine~e) exx~   pop hl
   1  call 7406"
   1  call 4535~~OVER:
   1  call 3756~~DRAW x,y:~~a) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~b) ld a,{y}    Y-Koordinate~   call 11560 "+c$
   1  call 3435~~COPY:
   1  call 3282~~STOP:
   1  auf Calculatorstack legen
   1  [siehe ""Farben setzen""]~~CIRCLE x,y,z:~~a) ld a,{x}    X-Koordinate~   call 11560 "+c$+"~b) ld a,{y}    Y-Koordinate~   call 11560 "+c$+"~c) ld a,{z}    Radius~   call 11560 "+c$
   1  [siehe ""Farben festlegen""]~~PAPER:
   1  [siehe ""Farben festlegen""]~~INVERSE:
   1  [siehe ""Farben festlegen""]~~INK:
   1  Zahlen dividieren~   Byt. #56    Ende des Calculators~d) ld a,{z}    Tonhoehe~   call 11560 "+c$+"~e) call 1016   BEEP-Routine aufrufen."
   1  Calculatoraufruf~   Byt. #5
   1  Ausdruck"
   1  = zurueck  
   1  = Seite anwaehlen
   1  1987 written by Klaus Jahn"
   1  1987 written by Klaus Jahn
   1  -""-~#255 Workspace~#254 Keyboard"
   1  (fuer PAPER 7)~d) rst 16~~Sollen die Farben allerdings bleiben~(nach CLS oder PRINT #), dann mu@ man mit~folgenden call-Befehlen arbeiten:"
   1  (=ASCII-Code von PAPER)~b) rst 16~c) ld a,7